package io.adrainty.bolee.insurance.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import io.adrainty.bolee.framework.commons.basic.TreeDTO;
import io.adrainty.bolee.insurance.models.entity.CategoryConditionEntity;
import io.adrainty.bolee.insurance.models.entity.CategoryEntity;

import java.util.List;

/**
 * <p>ICategoryService</p>
 *
 * @author AdRainty
 * @version V1.0.0
 * @description ICategoryService
 * @since 2025/8/11 11:20:43
 */
public interface ICategoryService {

    /**
     * <p>分页获取保险分类</p>
     *
     * @param pageNum  页码
     * @param pageSize 页大小
     * @param searchDTO 查询参数
     * @return {@link IPage < CategoryEntity >}
     */
    IPage<CategoryEntity> findCategoryPage(Integer pageNum, Integer pageSize, CategoryEntity searchDTO);

    /**
     * <p>获取保险分类列表</p>
     *
     * @param entity 保险分类实体
     * @return {@link List < CategoryEntity >}
     */
    List<CategoryEntity> findCategoryList(CategoryEntity entity);

    /**
     * <p>创建保险分类</p>
     *
     * @param entity 保险分类实体
     * @return {@link CategoryEntity}
     */
    CategoryEntity createCategory(CategoryEntity entity);

    /**
     * <p>修改保险分类</p>
     *
     * @param entity 保险分类实体
     * @return {@link Boolean}
     */
    Boolean updateCategory(CategoryEntity entity);

    /**
     * <p>删除保险分类</p>
     *
     * @param list 批量删除ID列表
     * @return {@link Boolean}
     */
    Boolean deleteCategory(List<String> list);

    /**
     * <p>获取保险分类树</p>
     *
     * @param entity 保险分类实体
     * @return {@link List < CategoryEntity >}
     */
    TreeDTO categoryTree(CategoryEntity entity);

    /**
     * <p>获取保险分类系数项列表</p>
     *
     * @param entity 保险系数项实体
     * @return {@link List < CategoryCoefficientEntity >}
     */
    List<CategoryConditionEntity> findCategoryConditionList(CategoryConditionEntity entity);

}
